package zhuanxing;

 class Animal {
    public void eat(){
        System.out.println("父类");
    }
}
class Dog extends Animal{
     @Override//重写方法
     public void eat(){
         System.out.println("子类");
     }
     public void cry(){
         System.out.println("子类特有方法");
     }
}

public class Test{
    public static void main(String[] args) {
        Animal animal=new Dog();                              //向上转型：（子类给到父类）子类对父类的方法进行重写后，再用父类的引用找到子类重写的方法再执行
        animal.eat();
         if (animal instanceof Dog)   {                        // 判断animal是否引用了Dog
             Dog dog=(Dog) animal;                            //向下转型：（父类给到子类）可以调用子类特有的方法
             dog.cry();                                       //向上转型：只能调用重写的父类的方法
         }
              else {
             System.out.println(animal instanceof Dog not );  //向下转型：（父类给到子类）可以调用子类特有的方法
         }                                                    // 确认animal实际指向Dog对象       //强制转换为Dog类型
    }
}